package com.xh3140.android.widget.dialog.params;

import android.content.Context;
import android.graphics.Typeface;
import android.view.Gravity;

import androidx.annotation.ColorInt;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.Px;
import androidx.annotation.Size;

import com.xh3140.android.widget.dialog.callback.ConfigViewCallback;
import com.xh3140.android.widget.dialog.values.ColorRes;
import com.xh3140.android.widget.dialog.values.DimenRes;
import com.xh3140.android.widget.dialog.view.ButtonView;

/**
 * 按钮视图配置属性
 * 每一个属性都有默认的设定值
 * 在创建对话框时这些属性可以自定义修改
 */
public final class ButtonParams extends AbstractParams {
    /**
     * 文本
     */
    @Nullable
    public CharSequence text = null;

    /**
     * 文本字体大小 sp
     */
    public float textSize = DimenRes.BUTTON_TEXT_SIZE;

    /**
     * 文本字体颜色 argb
     */
    @ColorInt
    public int textColor = ColorRes.BUTTON_POSITIVE_TEXT_COLOR;

    /**
     * 是否处于禁用状态
     */
    public boolean disable = false;

    /**
     * 禁用状态下的文本字体颜色 argb
     */
    @ColorInt
    public int disabledTextColor = ColorRes.BUTTON_DISABLED_TEXT_COLOR;

    /**
     * 文本字体样式
     */
    public int typeface = Typeface.NORMAL;

    /**
     * 文本位置
     */
    public int gravity = Gravity.CENTER;

    /**
     * 背景颜色 argb
     */
    @ColorInt
    public int backgroundColor = ColorRes.BUTTON_BACKGROUND_COLOR;

    /**
     * 按下状态背景颜色 argb
     */
    @ColorInt
    public int pressedBackgroundColor = ColorRes.BUTTON_PRESSED_BACKGROUND_COLOR;

    /**
     * 内边距
     * 格式：[start, top, end, bottom] px
     */
    @Nullable
    @Size(4)
    public int[] padding = dps2pxs(DimenRes.BUTTON_PADDING);

    /**
     * 外边距
     * 格式：[start, top, end, bottom] px
     */
    @Nullable
    @Size(4)
    public int[] margins = null;

    /**
     * 高度 px
     */
    @Px
    public int height = 0;

    /**
     * 配置回调
     * 拥有绝对控制权的回调，它在其他属性配置结束后回调
     * 一般情况不要使用它，除非提供的现有配置属性不满足需求
     */
    @Nullable
    public ConfigViewCallback<ButtonView> callback = null;

    public ButtonParams(@NonNull Context context) {
        super(context);
    }
}
